home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 038a / aplibs91.zip / SWW.BAS < prev   
BASIC Source File  |  1991-06-17  |  9KB  |  258 lines

  1.  
  2. '            ┌────────────────────────────────────────────────────────┐
  3. '            │                                                        │
  4. '            │  STATIC WINDOW CODER -- HB. Started 7-26-87 / 7-21-89  │
  5. '            │                                                        │
  6. '            └────────────────────────────────────────────────────────┘
  7.  
  8.                            $COMPILE EXE
  9.                            $LIB ALL OFF
  10.                           $ERROR ALL OFF
  11.                         $OPTION CNTLBREAK ON
  12.                             DEFINT A-Z
  13.  
  14.  DIM LineBuffer$(30): DIM FL(30): DIM FC(30)
  15.  Q$ = CHR$(34)
  16.  COLOR 14,0
  17.  CLS
  18.  IF INSTR (UCASE$ (COMMAND$), "BATCH") THEN BatchMode = -1
  19.  
  20. Start:
  21.  COLOR 15,2:LOCATE 3,23
  22.  PRINT " THE HB STATIC WINDOW CODE WRITER "
  23.  COLOR 14,0
  24.  IF COMMAND$ <> "" THEN
  25.     FlNm$ = EXTRACT$ (COMMAND$, " ")
  26.  ELSE
  27.     ON ERROR GOTO NoSuchInputFl
  28.     FILES "*.SW"
  29.     ON ERROR GOTO 0
  30.     PRINT  '                                    get a directory ...
  31.  
  32.     COLOR 9,0: INPUT "NAME OF WINDOW DESIGN FILE TO PROCESS:";FlNm$
  33.     IF FlNm$ = "" THEN CLS: GOTO AbnlTermi
  34.     IF INSTR (FlNm$, ".") THEN FlNm$ = LEFT$(FlNm$,(INSTR(FlNm$,".")-1))
  35.  END IF
  36.  COLOR 10,0: CLS
  37.  COLOR 14,4:LOCATE 3,23
  38.  PRINT "THE HB STATIC WINDOW CODE WRITER "
  39.  COLOR 10,0
  40.  LOCATE 7,10:PRINT "Will now make window ";FlNm$;" into compliable Basic"
  41.  LOCATE 8,13:PRINT "DATA statements.
  42.  LOCATE 10,2:PRINT "INPUT FILE IS ";FlNm$+".SW"
  43.  LOCATE 11,2:PRINT "OUTPUT FILE IS ";FlNm$+".INC (note: if a file by that"
  44.  LOCATE 12,30:PRINT " name exists it will be overwritten.)"
  45.  IF NOT BatchMode THEN
  46.    LOCATE 14,20,1: PRINT "PROCEED ? (y/n)";
  47.    DO: K$ = UCASE$ (INKEY$) : LOOP UNTIL K$ = "Y" OR K$ = "N": PRINT K$
  48.    IF K$ <> "Y" THEN PRINT: PRINT "OK, ENDING HERE.": GOTO AbnlTermi
  49.  END IF
  50.  LOCATE ,,0
  51. '                                                 file names are now set ...
  52. OpenFiles:
  53.  
  54.  ON ERROR GOTO NoSuchInputFl:
  55.  OPEN FlNm$+".SW" FOR INPUT AS 1
  56.  ON ERROR GOTO 0
  57.     COLOR 12,0:PRINT:PRINT " INPUT FILE OPEN -- LENGTH = ";LOF(1)
  58.     COLOR 14,0
  59.  
  60.  OPEN FlNm$+".INC" FOR OUTPUT AS 2
  61.  
  62. '=========================== START PROCESSING INPUT FILE ======================
  63.  
  64. SkipBlanks:
  65.  L = 0
  66.  DO
  67.    INCR L: LINE INPUT #1, Inpt$                ' skip blank lines
  68.    IF EOF(1) THEN BEEP: PRINT "OOPS ... Premature End of File": GOTO AbnlTermi
  69.  LOOP UNTIL Inpt$ <> ""
  70.  C = 1
  71. '                                                   ' take 1st line ...
  72. SearchBox:
  73.  LOCATE 24,1: COLOR 12,0:PRINT Inpt$: COLOR 14,0
  74.  DO WHILE LEFT$(Inpt$,1) = " "                       ' chop spaces off left end
  75.      Inpt$ = MID$(Inpt$,2): GOSUB DispLns: INCR C '             and count them ...
  76.  LOOP
  77.  
  78.  IF LEFT$(Inpt$,1) <> "^" THEN
  79.    LOCATE 23,1: PRINT ">";Inpt$: PRINT "OOPS! Checking line";L;
  80.    PRINT ": TOP OF BOX NOT FOUND":GOTO AbnlTermi
  81.  END IF
  82.  
  83. ' ===================== SET WINDOW DIMENSIONS ================================
  84.  
  85.  CornerCol = C: BoxTop = L  '                       top of box has been found
  86.  
  87.  
  88.  Wid = 0
  89.  DO UNTIL MID$(Inpt$,Wid+1,1) <> "^": INCR Wid: LOOP  ' count carrots ...
  90.  
  91.  PRINT  "'   Code to write Static Window {";FlNm$;"} to Screen"
  92.  PRINT  "'        note: created by StatWindow Writer (SWW) from ";FlNm$;".SW"
  93.  PRINT
  94.  PRINT  " COLOR BoxColor MOD 16, BoxColor \ 16"
  95.  PRINT  " LOCATE "+ STR$(BoxTop)+","+STR$(CornerCol)
  96.  
  97.  T$ = "": FOR N = 1 TO Wid-2: T$ = T$+CHR$(196): NEXT
  98.  PRINT  " PRINT "+ Q$ + CHR$(218) + T$ + CHR$(191)
  99.  
  100.  PRINT #2, "'   Code to write Static Window {";FlNm$;"} to Screen"
  101.  PRINT #2, "'        note: created by StatWindow Writer (SWW) from ";FlNm$;".SW"
  102.  PRINT #2, ""
  103.  PRINT #2, " COLOR BoxColor MOD 16, BoxColor \ 16"
  104.  PRINT #2, " LOCATE "+ STR$(BoxTop)+","+STR$(CornerCol)
  105.  PRINT #2, " PRINT "+ Q$ + CHR$(218) + T$ + CHR$(191) + Q$
  106.  
  107.  
  108. '    ============= PARSE REMAINING LINES DOWN TO BOXBOTTOM ===============
  109.  
  110.  N = 2
  111.  DO
  112.    INCR L: LINE INPUT #1, Inpt$
  113.    IF EOF(1) THEN PRINT "ERROR -- INPUT FILE INCOMPLETE": GOTO AbnlTermi
  114.    LOCATE 24,1: COLOR 12,0:PRINT Inpt$: COLOR 14,0
  115.    GOSUB DispLns
  116.  
  117. '                                        cut off leading spaces ...
  118.  
  119.    DO WHILE LEFT$(Inpt$,1) = " ": Inpt$ = MID$(Inpt$,2) : GOSUB DispLns : LOOP
  120.    IF Inpt$ = "" THEN Inpt$ = "^^"
  121.    Inpt$ = MID$(Inpt$,2) '                   cut off the leading carrot ...
  122.  
  123. '                                             see if this is the bottom ...
  124.  
  125.    IF LEFT$(Inpt$,1) = "^" THEN
  126.        BoxBottom = L+1  '   if there's a second carrot this must be the bottom;
  127.        EXIT LOOP
  128.    ELSE
  129. '                                                  at this point the string
  130. '                                                  has to be either spaces
  131. '                                                  & text, spaces only, or "".
  132.  
  133. '               ============= Check4Fields =============
  134.  
  135.        C = 0
  136.        X = 0 '                 otherwise find the field locations in the line...
  137.        DO
  138.          INCR X: INCR C
  139.          IF MID$(Inpt$,X,1) = "{" THEN '              if a field marker is found
  140.            MID$(Inpt$,X) = " "  '                     replace it w/ a space ...
  141.            INCR Fld%
  142.            FL(Fld%) = L  '                          and plug its location into
  143.            FC(Fld%) = C  '                           arrays for later use ...
  144.          GOSUB DispLns
  145.          END IF
  146.          IF MID$(Inpt$,X,1) = "}" THEN MID$(Inpt$,X) = " " '    replace "}" w/  " "
  147.        LOOP UNTIL X >= LEN(Inpt$)
  148.  
  149.  
  150. '                    ============ TrimRightEndOff =============
  151.  
  152.        DO UNTIL RIGHT$(Inpt$,1) <> " " AND RIGHT$(Inpt$,1) <> "^"
  153.          Inpt$ = LEFT$(Inpt$,LEN(Inpt$)-1)
  154.        LOOP
  155.  
  156.    END IF
  157.  
  158.     PRINT #2, " LOCATE "+ STR$(L)+","+STR$(CornerCol)
  159.     PRINT #2, " PRINT "+ Q$ + CHR$(179) + Inpt$ _
  160.                  + SPACE$ (Wid - LEN (Inpt$) - 2) + CHR$(179) + Q$ + ";"
  161. '               LPRINT "                  It is Written ...";
  162.     LOCATE 24,1
  163.     PRINT " LOCATE "+ STR$(L)+","+STR$(CornerCol)
  164.     PRINT " PRINT "+ Q$ + CHR$(179) + Inpt$ _
  165.                  + SPACE$ (Wid - LEN (Inpt$) - 2) + CHR$(179) + Q$ + ";"
  166.  
  167.  LOOP UNTIL BoxBottom
  168.  LOCATE 24,1
  169.  PRINT " LOCATE "+ STR$(L)+","+STR$(CornerCol)
  170.  PRINT " PRINT "+ Q$ + CHR$(192) + T$ + CHR$(217) + Q$ + ";"
  171.  
  172.  PRINT #2, " LOCATE "+ STR$(L)+","+STR$(CornerCol)
  173.  PRINT #2, " PRINT "+ Q$ + CHR$(192) + T$ + CHR$(217) + Q$ + ";"
  174.  
  175.  
  176. '         ===================== READ FIELD DATA =====================
  177.  
  178.  IF Fld% > 0 AND NOT EOF (1) THEN
  179.    PRINT #2, ""
  180.    PRINT #2, " COLOR FldColor MOD 16, FldColor \ 16"
  181.    PRINT #2, FlNm$+"Fields:" '                           create a line label ...
  182.  
  183.    PRINT " COLOR FldColor MOD 16, FldColor \ 16"
  184.    PRINT FlNm$+"Fields:" '                           create a line label ...
  185.  
  186.    Fld% = 0
  187.    DO
  188.      LINE INPUT #1,Inpt$
  189.      LOCATE 24,1: COLOR 12,0:PRINT LEFT$ (Inpt$,79): COLOR 14,0
  190.    LOOP UNTIL LEFT$(Inpt$,1) = "\"
  191.  
  192. WritePtII:
  193.    DO UNTIL EOF(1)
  194.      LINE INPUT #1,Inpt$
  195.  
  196.      IF Inpt$ <> "" AND LEFT$(Inpt$,1) <> " " THEN
  197.        LOCATE 24,1: COLOR 12,0:PRINT Inpt$: COLOR 14,0
  198.        INCR Fld%
  199.  
  200.        CommaPos = INSTR (Inpt$, ",")
  201.        IF CommaPos = 0 THEN PRINT "NO DELIMITING COMMA IN LINE: ";Inpt$:GOTO AbnlTermi
  202.        DO WHILE INSTR (CommaPos+1, Inpt$, ",") > CommaPos
  203.          CommaPos = INSTR (CommaPos+1, Inpt$, ",")
  204.        LOOP
  205.  
  206.        PRINT " LOCATE " + STR$ (FL(Fld%)) + "," + STR$ (FC(Fld%) + CornerCol)
  207.        PRINT " PRINT USING " + MID$ (Inpt$, CommaPos+1) + ";"_
  208.                                                     + LEFT$ (Inpt$, CommaPos-1)
  209.  
  210.        PRINT #2, " LOCATE " + STR$ (FL(Fld%)) + "," + STR$ (FC(Fld%) + CornerCol)
  211.        PRINT #2, " PRINT USING " + MID$ (Inpt$, CommaPos+1) + ";"_
  212.                                                + LEFT$ (Inpt$, CommaPos-1) + ";"
  213.    END IF
  214.  
  215.    LOOP
  216.  
  217.    PRINT #2, " COLOR ScrColor MOD 16, ScrColor \ 16"
  218.  
  219.  END IF
  220.  
  221.  Report$ = "              DONE, NO ERRORS -- OK"
  222.  ECode = 0
  223.  IF Fld% > 0 AND FL(Fld%) = 0 THEN
  224.     Report$ = "DONE. INPUT FILE ERROR -- TOO MANY FIELDS NAMED."
  225.  END IF
  226.  
  227.  INCR Fld%
  228.  IF FL(Fld%) <> 0 THEN_
  229.   Report$ = "DONE. INPUT FILE ERROR -- TOO MANY FIELD LOCATION"+_
  230.     " MARKERS ({) IN DESIGN."
  231.  
  232.  Print #2, ""
  233.  PRINT #2, "'  ";DATE$;", ";LEFT$(TIME$,5);_
  234.            ":   end of StatWindow generated code for window {";FlNm$;"}"
  235.  CLOSE
  236.  PRINT: PRINT "     "; Report$
  237.  IF Report$ <> "              DONE, NO ERRORS -- OK" THEN
  238.    PLAY "O3 B8 P8 G4"
  239.    DO: LOOP UNTIL INKEY$ <> ""
  240.  END IF
  241.  END
  242. '               <<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>
  243.  
  244. NoSuchInputFl:
  245.      PRINT:PRINT:PRINT "    ERROR -- Input File ";FlNm$;".SW not found"
  246.      PRINT: GOTO AbnlTermi
  247.      RESUME
  248.  
  249. DispLns:
  250.  LOCATE 4,1: PRINT SPACE$(80)
  251.  COLOR 10,0: LOCATE 4,1:PRINT Inpt$;: COLOR 14,0
  252.  RETURN
  253.  
  254. AbnlTermi:
  255.  PLAY "O3 B8 P8 G4"
  256.  DO: LOOP UNTIL INKEY$ <> ""
  257.  END
  258.